const fs = require('fs');
const path = require('path');
const log4js = require('log4js');

// 配置 log4js
log4js.configure({
  appenders: {
    errorFile: { type: 'file', filename: 'logs/function/error.logs', compress: true },
  },
  categories: { default: { appenders: ['errorFile'], level: 'error' } },
});
const logger = log4js.getLogger('error');

/**
 * 全局错误捕获中间件
 * @param {Function} func 要包装的目标函数
 * @returns 包装后的函数
 */
function withErrorHandling(func) {
  return async (...args) => {
    try {
      // 执行目标函数
      return await func(...args);
    } catch (err) {
      // 记录错误日志
      const logMessage = `[${new Date().toISOString()}] Error in function "${func.name || 'anonymous'}":\n` +
                         `${err.message}\nStack Trace:\n${err.stack}\n`;
      logger.error(logMessage);
      console.error('Error captured:', logMessage); // 控制台输出
    }
  };
}
module.exports  =withErrorHandling